package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.dto.UserSalaryDTO;
import com.ruoyi.common.core.domain.entity.SysSalary;
import java.util.List;

/**
 * 薪资信息表 服务层
 */
public interface ISysSalaryService {

    /**
     * 查看薪资列表
     * @param salary 条件查询
     * @return 薪资列表
     */
    public List<SysSalary> selectSalaryList(SysSalary salary);

    /**
     * 修改薪资信息
     * @param salary 薪资信息
     * @return 结果
     */
    public int updateSalary(SysSalary salary);

    /**
     * 删除薪资信息
     * @param salaryIds 薪资ID数组
     * @return 结果
     */
    public int deleteSalaryByIds(Long[] salaryIds);

    /**
     * 新增薪资信息
     * @param salary 薪资信息
     * @return 结果
     */
    public int insertSalary(SysSalary salary);

    /**
     * 根据薪资ID查询薪资信息
     * @param salaryId 薪资ID
     * @return 薪资信息
     */
    public SysSalary selectSalaryById(Long salaryId);

    /**
     * 校验该用户在该月份是否存在薪资信息
     * @param salary 薪资信息
     * @return true：存在，false：不存在
     */
    public boolean checkSalaryExist(SysSalary salary);

    /**
     * 查询用户薪资信息（显式JOIN查询）
     * @return 用户薪资列表
     */
    public List<UserSalaryDTO> selectUserSalaryWithExplicitJoin();

    /**
     * 查询用户薪资信息（隐式JOIN查询）
     * @return 用户薪资列表
     */
    public List<UserSalaryDTO> selectUserSalaryWithImplicitJoin();
}
